The goals of the high performance biomedical computing program are to identify and solve those computational problems in biomedicine that can benefit from high performance hardware, modern software engineering principles, and efficient algorithms. This effort includes providing high performance parallel computer systems for the NIH staff and developing parallel algorithms for biomedical applications. Using high performance parallel computers, biomedical scientists can greatly reduce the time it takes to complete computationally intensive tasks and take new approaches in processing their data. This may allow the inclusion of more data in a calculation, the determination of a more accurate result, a reduction in the time needed to complete a long computation, or the implementation of a new algorithm or more realistic model. With proper computer network connections and interactive user interface, parallel computing is readily available to a biomedical researcher in the laboratory or clinic at the investigator's computer workstation. In addressing these computational challenges, CBEL is developing algorithms for a number of biomedical applications that can benefit from computational speedup, including image processing of electron micrographs, radiation treatment planning, medical imaging, protein and nucleic acid sequence analysis, human genetic linkage analysis, protein folding prediction, nuclear magnetic resonance spectroscopy, x-ray crystallography, quantum chemical methods, and molecular dynamics simulations. The ultimate goal is to have high performance parallel computing facilitate the science that is done at NIH. While developing these computationally demanding applications, CBEL is investigating the following high performance computing issues: partitioning a problem into many parts that can be independently executed on different processors; designing algorithms so that delays of interprocessor communication can be kept to a small fraction of the computation time; designing the parts so that the computing load can be distributed evenly over the available processors or dynamically balanced; designing algorithms so that the number of processors is a parameter and the algorithms can be configured dynamically for the available machine; developing tools and environments for producing portable parallel programs and monitoring system performance; and proving that a parallel algorithm on a given machine meets its specifications.